(() => {
  // readonly修饰符，对类中的属性成员进行修饰，修饰后，该属性成员就不能在外部被修改了，但是可以进行初始化修改
  // 构造函数中，可以对只读的属性成员进行修改
  // 如果构造函数中没有任何的参数，类中的属性成员，外部不可以修改

  // class Person {
  //   // readonly name: string = "大甜甜"
  //   readonly name: string
  //   constructor(name: string = '大甜甜') {
  //     this.name = name
  //   }
  //   sayHi() {
  //     // this.name = 'tianitn'//类中的普通方法中也是不能修改readonly修饰的成员属性值的
  //     console.log(`我是${this.name}`)
  //   }
  // }


  // const person: Person = new Person('小甜甜')
  // person.sayHi()


  // person.name = '甜甜'//该属性成员就不能在外部被修改了




  // readonly 修饰类中的构造函数中的参数

  class Person {

    // 构造函数中的name,一旦使用readonly进行修饰后，那么该name可以叫参数属性
    // 构造函数中的name参数，一旦使用readonly进行修饰后，那么Person中就有了一个name的属性成员,同时外部也是无法进行修改的

    // 构造函数中的name参数，一旦使用public进行修饰后,那么Person类中就有了一个公共的name属性成员
    // 同理，private,protect
    constructor(readonly name: string = '大甜甜') {
      // this.name = name
    }
  }


  const person: Person = new Person('小甜甜')
  console.log(person.name)

  // person.name = ' harass'





})()